/**
 * Trabajo de Ingeniería de Software 2
 * Año 2008
 * Sistema de Reserva de Recursos.
 * Desarrolladores: - Marcelo Ferreira.
 *                  - Christian Gómez.
 *                  - Marcelo Rodas.
 */

package modelo;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Clase Entidad Datospersonales (JPA)
 * @author cgomez
 */
@Entity
@Table(name = "datospersonales")
@NamedQueries({@NamedQuery(name = "Datospersonales.findByIddatospersonales", query = "SELECT d FROM Datospersonales d WHERE d.iddatospersonales = :iddatospersonales"), @NamedQuery(name = "Datospersonales.findByNombres", query = "SELECT d FROM Datospersonales d WHERE d.nombres = :nombres"), @NamedQuery(name = "Datospersonales.findByApellidos", query = "SELECT d FROM Datospersonales d WHERE d.apellidos = :apellidos"), @NamedQuery(name = "Datospersonales.findByNrodocumento", query = "SELECT d FROM Datospersonales d WHERE d.nrodocumento = :nrodocumento"), @NamedQuery(name = "Datospersonales.findByFechaNacimiento", query = "SELECT d FROM Datospersonales d WHERE d.fechaNacimiento = :fechaNacimiento"), @NamedQuery(name = "Datospersonales.findByDireccion", query = "SELECT d FROM Datospersonales d WHERE d.direccion = :direccion"), @NamedQuery(name = "Datospersonales.findByEmail", query = "SELECT d FROM Datospersonales d WHERE d.email = :email"), @NamedQuery(name = "Datospersonales.findByTelefono", query = "SELECT d FROM Datospersonales d WHERE d.telefono = :telefono"), @NamedQuery(name = "Datospersonales.findBySexo", query = "SELECT d FROM Datospersonales d WHERE d.sexo = :sexo"), @NamedQuery(name = "Datospersonales.findByObservacion", query = "SELECT d FROM Datospersonales d WHERE d.observacion = :observacion")})
public class Datospersonales implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "iddatospersonales", nullable = false)
    private Integer iddatospersonales;
    @Column(name = "nombres", nullable = false)
    private String nombres;
    @Column(name = "apellidos", nullable = false)
    private String apellidos;
    @Column(name = "nrodocumento")
    private String nrodocumento;
    @Column(name = "fechaNacimiento")
    @Temporal(TemporalType.DATE)
    private Date fechaNacimiento;
    @Column(name = "direccion")
    private String direccion;
    @Column(name = "email")
    private String email;
    @Column(name = "telefono")
    private String telefono;
    @Column(name = "sexo")
    private String sexo;
    @Column(name = "observacion")
    private String observacion;
    @Column(name = "useraudita")
    private String userAudita;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "iddatospersonales")
    private Collection<Usuario> usuarioCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "iddatospersonales")
    private Collection<Solicitudusuario> solicitudusuarioCollection;
    
    /**
     * Crea una nueva instancia de Datospersonales
     */
    public Datospersonales() {
    }
    
    /**
     * Crea una nueva instancia de Datospersonales con valores especificos
     * @param iddatospersonales El idDatospersonales de Datospersonales
     */
    public Datospersonales(Integer iddatospersonales) {
        this.iddatospersonales = iddatospersonales;
    }
    /**
     * Crea una nueva instancia de Solicitudreserva con valores especificos
     * @param iddatospersonales el idDatospersonales de Datospersonales
     * @param nombres el atributo nombres de Datospersonales
     * @param apellidos el atributo apellidos de Datospersonales
     */
    public Datospersonales(Integer iddatospersonales, String nombres, String apellidos) {
        this.iddatospersonales = iddatospersonales;
        this.nombres = nombres;
        this.apellidos = apellidos;
    }
    /**
     * Getter del atributo userAudita
     * @return String
     */
    public String getUserAudita() {
        return userAudita;
    }
    /**
     * Setter del atributo userAudita
     * @param userAudita es el usuario que se esta auditando
     */
    public void setUserAudita(String userAudita) {
        this.userAudita = userAudita;
    }
    /**
     * Obtiene el iddatospersonales de Datospersonales
     * @return El iddatospersonales de Datospersonales
     */
    public Integer getIddatospersonales() {
        return iddatospersonales;
    }
    
    /**
     * Fija el identificador de Datospersonales al valor especificado
     * @param iddatospersonales El iddatospersonales de la Datospersonales
     */
    public void setIddatospersonales(Integer iddatospersonales) {
        this.iddatospersonales = iddatospersonales;
    }
    /**
     * Obtiene el nombres de Datospersonales
     * @return El nombres de Datospersonales
     */
    public String getNombres() {
        return nombres;
    }
    /**
     * Fija el identificador nombres de Datospersonales al valor especificado
     * @param nombres El nombres de la Datospersonales
     */
    public void setNombres(String nombres) {
        this.nombres = nombres;
    }
    /**
     * Obtiene el apellidos de Datospersonales
     * @return El apellidos de Datospersonales
     */
    public String getApellidos() {
        return apellidos;
    }
    /**
     * Fija el identificador apellidos de Datospersonales al valor especificado
     * @param apellidos El identificador apellidos de la Datospersonales
     */
    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }
    /**
     * Obtiene el nrodocumeto de Datospersonales
     * @return El nrodocumeto de Datospersonales
     */
    public String getNrodocumento() {
        return nrodocumento;
    }
    /**
     * Fija el identificador nrodocumeto de Datospersonales al valor especificado
     * @param nrodocumento El identificador nrodocumeto de la Datospersonales
     */
    public void setNrodocumento(String nrodocumento) {
        this.nrodocumento = nrodocumento;
    }
    /**
     * Obtiene el fechaNacimiento de Datospersonales
     * @return El fechaNacimiento de Datospersonales
     */
    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }
    /**
     * Fija el identificador fechaNacimiento de Datospersonales al valor especificado
     * @param fechaNacimiento El identificador fechaNacimiento de la Datospersonales
     */
    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }
    /**
     * Obtiene el direccion de Datospersonales
     * @return El direccion de Datospersonales
     */
    public String getDireccion() {
        return direccion;
    }
    /**
     * Fija el identificador direccion de Datospersonales al valor especificado
     * @param direccion El identificador direccion de la Datospersonales
     */
    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }
    /**
     * Obtiene el email de Datospersonales
     * @return El email de Datospersonales
     */
    public String getEmail() {
        return email;
    }
    /**
     * Fija el identificador email de Datospersonales al valor especificado
     * @param email El identificador email de la Datospersonales
     */
    public void setEmail(String email) {
        this.email = email;
    }
    /**
     * Obtiene el telefono de Datospersonales
     * @return El telefono de Datospersonales
     */
    public String getTelefono() {
        return telefono;
    }
    /**
     * Fija el identificador telefono de Datospersonales al valor especificado
     * @param telefono El identificador telefono de la Datospersonales
     */
    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }
    /**
     * Obtiene el sexo de Datospersonales
     * @return El sexo de Datospersonales
     */
    public String getSexo() {
        return sexo;
    }
    /**
     * Fija el identificador sexo de Datospersonales al valor especificado
     * @param sexo El identificador sexo de la Datospersonales
     */
    public void setSexo(String sexo) {
        this.sexo = sexo;
    }
    /**
     * Obtiene el observacion de Datospersonales
     * @return El observacion de Datospersonales
     */
    public String getObservacion() {
        return observacion;
    }
    /**
     * Fija el identificador observacion de Datospersonales al valor especificado
     * @param observacion El identificador observacion de la Datospersonales
     */
    public void setObservacion(String observacion) {
        this.observacion = observacion;
    }
    
    /**
     * Obtiene un usuarioCollection de Datospersonales
     * @return el usuarioCollection de Datospersonales
     */
    public Collection<Usuario> getUsuarioCollection() {
        return usuarioCollection;
    }
    /**
     * Fija el usuarioCollection de Datospersonales al valor especificado
     * @param usuarioCollection el usuarioCollection de Datospersonales
     */
    public void setUsuarioCollection(Collection<Usuario> usuarioCollection) {
        this.usuarioCollection = usuarioCollection;
    }
    
    /**
     * Obtiene un solicitudusuarioCollection de Datospersonales
     * @return el solicitudusuarioCollection de Datospersonales
     */
    public Collection<Solicitudusuario> getSolicitudusuarioCollection() {
        return solicitudusuarioCollection;
    }
    /**
     * Fija la solicitudusuarioCollection de Datospersonales al valor especificado
     * @param solicitudusuarioCollection La solicitudusuarioCollection de Datospersonales
     */
    public void setSolicitudusuarioCollection(Collection<Solicitudusuario> solicitudusuarioCollection) {
        this.solicitudusuarioCollection = solicitudusuarioCollection;
    }
    
    /**
     * Retorna un valor de Hash para el objeto.
     * Esta implementacion evalua un valor hash basado sobre los campos id en este objeto
     * @return Un valor de hash para este objeto
     */
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (iddatospersonales != null ? iddatospersonales.hashCode() : 0);
        return hash;
    }

    /**
     * Determina si otro objeto es igual a Datospersonales. El resultado es
     * <code>true</code> si y solo si el argumento no es nulo y es un objeto Datospersonales
     * que tiene el mismo valor del campo id en este objeto.
     * @param object La referencia objeto con el cual comparar
     * @return <code>true</code> Si este objeto es la misma que su argumento;
     * <code>false</code> si no lo es.
     */
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Datospersonales)) {
            return false;
        }
        Datospersonales other = (Datospersonales) object;
        if ((this.iddatospersonales == null && other.iddatospersonales != null) || (this.iddatospersonales != null && !this.iddatospersonales.equals(other.iddatospersonales))) {
            return false;
        }
        return true;
    }
    /**
     * Retorna una representacion String de este objeto.  Esta implementacion This implementation construye
     * la representacion basada en los campos.
     * @return Una representacion String del objeto.
     */
    @Override
    public String toString() {
        return this.getApellidos()+", "+this.getNombres()+" -- " + "CI:"+this.getNrodocumento();
    }

}
